package routers

import (
	"encoding/json"
	"net/http"

	"github.com/gin-gonic/gin"
)

// 弃用
func AppRoutes(r *gin.Engine) {

	r.GET("/index", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"msg": "这是后端传来的东西！",
		})
	})

	// resterful 风格传参方式 试用冒号
	r.GET("/user/info/:uid/:uname", func(ctx *gin.Context) {
		// 如果用传统的方式传参 就用query
		// 如果用 resterful 风格 就用Param， Params是接收多个参数

		// http://localhost/user/info/2/name
		uid := ctx.Param("uid")
		uname := ctx.Param("uname")
		ctx.JSON(http.StatusOK, gin.H{
			"uid":   uid,
			"uname": uname,
		})
	})

	// 解析json
	r.POST("/json", func(ctx *gin.Context) {

		// request.body
		info, _ := ctx.GetRawData() // 返回切片

		var mp map[string]interface{}

		_ = json.Unmarshal(info, &mp) // 第一个参数 切片byte，第二个any 任何
		ctx.JSON(http.StatusOK, mp)   // 正常返回json序列号
	})

	// 获取表单
	r.POST("/user/add", func(ctx *gin.Context) {
		name := ctx.PostForm("name")
		age := ctx.PostForm("age")
		ctx.JSON(http.StatusOK, gin.H{
			"age":  age,
			"name": name,
		})
	})

	// 重定向
	r.GET("test", func(ctx *gin.Context) {
		ctx.Redirect(http.StatusMovedPermanently, "http://www.baidu.com") // 或者可以直接写301
	})

	// 404 注意写法 和其他的不一样
	// r.NoRoute(func(ctx *gin.Context) {
	// 	ctx.HTML(http.StatusNotFound, "404.html", nil) //  会从上面的 templates下面找
	// })

	//MysqlRouterGroup := r.Group("/gvb", Middlewares.InitMiddleware)
	//{
	//	MysqlRouterGroup.GET("/siteInfo", Api.GetSiteInfo)
	//
	//}

}
